/*
模块名称：2048结束胜利条件判断int gameJudge( )
模块功能：移动与数字处理步骤完成后，判断该次游戏结束状态，游戏胜利失败跳转至相应界面，否则游戏继续。
输入：4*4矩阵各单元内的数字。
输出：返回判断结果，游戏胜利(1)或失败(0)或继续(2)。
判断步骤：首先判断是否满足胜利条件，之后判断是否满足失败条件，都不满足则满足继续条件。
成功条件：其中一个单元内的数字达到2048。
继续条件：当仍有单元内的数字为0，或某一个单位的数字与其相邻单位数字相同时，可以进行平移操作，游戏继续。
失败条件：不可进行移动时，游戏失败。
*/
#include "gameJudge.h"
int gameJudge(int game[4][4])
{

    //任一格内数字达到2048，游戏胜利
    for(int i = 0; i < 4; ++i)
    {
        for(int j = 0; j < 4; ++j)
        {
            if(game[i][j] == 2048)
            {
                return 1;
            }
        }
    }
    //检查是否可以横向移动
    for(int i = 0 ; i < 4; ++i)
    {
        for(int j = 0; j < 4 - 1; ++j)
        {
            if(!game[i][j] || (game[i][j] == game[i][j+1]))
            {
                return 2;
            }
        }
    }
    //检查是否可以纵向移动
    for(int j = 0; j< 4; ++j)
    {
        for(int i = 0; i < 4 -1; ++i)
        {
            if(!game[i][j] || (game[i][j] == game[i+1][j]))
            {
                return 2;
            }
        }
    }
    //未胜利，也无法移动时游戏失败
    return 0;
}
